using System;
using System.Collections.Generic;
using System.Text;
using System.Transactions;
namespace MsdnVideo
{
    class PeliculasCN
    {
        public void DevolverPelicula(AlquilersDS.AlquileresRow alquiler)
        {
            TransactionScope tx = new TransactionScope();

            using (tx)
            {
                //1- Establecer Devuelta a true

                AlquilersDSTableAdapters.AlquileresTableAdapter adaptadorAlquileres = new MsdnVideo.AlquilersDSTableAdapters.AlquileresTableAdapter();
                alquiler.Devuelta = true;
                adaptadorAlquileres.Update(alquiler);

                //2.- Actualizar Stock, sumar 1

                PeliculasDSTableAdapters.PeliculasTableAdapter adaptadorPeliculas = new MsdnVideo.PeliculasDSTableAdapters.PeliculasTableAdapter();
                PeliculasDS peliculasDS = new PeliculasDS();

                adaptadorPeliculas.FillByCodigoBarras(peliculasDS.Peliculas, alquiler.CodBarras);
                peliculasDS.Peliculas[0].Stock += 1;

                adaptadorPeliculas.Update(peliculasDS.Peliculas);

                //Comprometemos la transaccion
                tx.Complete();
            }


        }
        public void AlquilarPelicula(string CodBarrasPelicula, string DniSocio)
        {
            TransactionScope tx = new TransactionScope();
            using (tx)
            {
                //Comprobar el stock

                PeliculasDSTableAdapters.PeliculasTableAdapter adaptadorPeliculas = new MsdnVideo.PeliculasDSTableAdapters.PeliculasTableAdapter();
                PeliculasDS peliculasDS = new PeliculasDS();
                adaptadorPeliculas.FillByCodigoBarras(peliculasDS.Peliculas, CodBarrasPelicula);

                if (peliculasDS.Peliculas.Count == 0)
                {
                    throw new ApplicationException("No existe la pelicula");
                }
                if (peliculasDS.Peliculas[0].Stock == 0)
                {
                    throw new ApplicationException("No hay stock de peliculas");
                }

                //Decrementar el stock

                peliculasDS.Peliculas[0].Stock -= 1;
                adaptadorPeliculas.Update(peliculasDS.Peliculas);

                //Alquilar la pelicula

                AlquilersDSTableAdapters.AlquileresTableAdapter adaptadorAlquileres = new MsdnVideo.AlquilersDSTableAdapters.AlquileresTableAdapter();
                AlquilersDS alquilerDS = new AlquilersDS();

                alquilerDS.Alquileres.AddAlquileresRow(DniSocio, CodBarrasPelicula, DateTime.Now, false);
                adaptadorAlquileres.Update(alquilerDS.Alquileres);
                

                //Completamos la transaccion si todo es correcto
                tx.Complete();
            }


        }
    }
}
